package com.doubao.device.dto;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 智能体数据传输对象
 */
@Data
public class SmartDeviceDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    private Long id;

    /**
     * 唯一标识
     */
    private String uuid;

    /**
     * 创建者ID
     */
    private Long userId;

    /**
     * 创建者名称
     */
    private String creatorName;

    /**
     * 智能体名称
     */
    private String name;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 描述
     */
    private String description;

    /**
     * 提示词
     */
    private String prompt;

    /**
     * 分类ID
     */
    private Long categoryId;

    /**
     * 分类名称
     */
    private String categoryName;

    /**
     * 版本号
     */
    private String version;

    /**
     * AI提供商ID
     */
    private Long aiProviderId;

    /**
     * AI提供商名称
     */
    private String aiProviderName;

    /**
     * AI模型ID
     */
    private Long aiModelId;

    /**
     * AI模型名称
     */
    private String aiModelName;

    /**
     * 是否公开 1:是 0:否
     */
    private Integer isPublic;

    /**
     * 是否付费 1:是 0:否
     */
    private Integer isPremium;

    /**
     * 使用次数
     */
    private Integer usageCount;

    /**
     * 收藏次数
     */
    private Integer collectionCount;

    /**
     * 平均评分
     */
    private BigDecimal averageRating;

    /**
     * 当前用户是否收藏
     */
    private Boolean collected;

    /**
     * 当前用户评分
     */
    private Integer userRating;

    /**
     * 最大上下文长度
     */
    private Integer maxContextLength;

    /**
     * 知识库ID列表
     */
    private List<Long> knowledgeBaseIds;

    /**
     * 能力列表
     */
    private List<String> abilities;

    /**
     * 语音ID
     */
    private String voiceId;

    /**
     * 语音类型
     */
    private String voiceType;

    /**
     * 语音速率
     */
    private Float voiceSpeedRatio;

    /**
     * API端点ID
     */
    private String apiEndpointId;

    /**
     * API基础URL
     */
    private String apiBaseUrl;

    /**
     * API超时设置（秒）
     */
    private Integer apiTimeout;

    /**
     * API重试次数
     */
    private Integer apiRetryTimes;

    /**
     * 标签列表
     */
    private List<TagDTO> tags;

    /**
     * 输入tokens累计
     */
    private Long promptTokens;

    /**
     * 输出tokens累计
     */
    private Long completionTokens;

    /**
     * 扩展信息
     */
    private Object extInfo;

    /**
     * 状态 1:正常 0:禁用
     */
    private Integer status;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    public Boolean getCollected() {
        return this.collected;
    }
}